using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Markup;
using System.Windows.Media;
namespace Coding4Fun.Phone.Controls
{
	[ContentProperty("Title")]
	public class MetroFlowItem : Control
	{
		private const int int_0 = 1;
		public static readonly DependencyProperty ImageProperty = DependencyProperty.Register("ImageSource", typeof(ImageSource), typeof(MetroFlowItem), new PropertyMetadata(new PropertyChangedCallback(MetroFlowItem.smethod_0)));
		public static readonly DependencyProperty ImageVisibilityProperty = DependencyProperty.Register("ImageVisibility", typeof(Visibility), typeof(MetroFlowItem), new PropertyMetadata(0));
		public static readonly DependencyProperty ImageOpacityProperty = DependencyProperty.Register("ImageOpacity", typeof(double), typeof(MetroFlowItem), new PropertyMetadata(1.0));
		public static readonly DependencyProperty ItemIndexStringProperty = DependencyProperty.Register("ItemIndexString", typeof(string), typeof(MetroFlowItem), new PropertyMetadata(1.ToString()));
		public static readonly DependencyProperty ItemIndexProperty = DependencyProperty.Register("ItemIndex", typeof(int), typeof(MetroFlowItem), new PropertyMetadata(1));
		public static readonly DependencyProperty ItemIndexVisibilityProperty = DependencyProperty.Register("ItemIndexVisibility", typeof(Visibility), typeof(MetroFlowItem), new PropertyMetadata(1));
		public static readonly DependencyProperty ItemIndexOpacityProperty = DependencyProperty.Register("ItemIndexOpacity", typeof(double), typeof(MetroFlowItem), new PropertyMetadata(0.0));
		public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(MetroFlowItem), new PropertyMetadata("Lorem ipsum dolor sit amet"));
		public static readonly DependencyProperty TitleVisibilityProperty = DependencyProperty.Register("TitleVisibility", typeof(Visibility), typeof(MetroFlowItem), new PropertyMetadata(0));
		public static readonly DependencyProperty TitleOpacityProperty = DependencyProperty.Register("TitleOpacity", typeof(double), typeof(MetroFlowItem), new PropertyMetadata(1.0));
		public ImageSource ImageSource
		{
			get
			{
				return (ImageSource)base.GetValue(MetroFlowItem.ImageProperty);
			}
			set
			{
				base.SetValue(MetroFlowItem.ImageProperty, value);
			}
		}
		public Visibility ImageVisibility
		{
			get
			{
				return (Visibility)base.GetValue(MetroFlowItem.ImageVisibilityProperty);
			}
			set
			{
				base.SetValue(MetroFlowItem.ImageVisibilityProperty, value);
			}
		}
		public double ImageOpacity
		{
			get
			{
				return (double)base.GetValue(MetroFlowItem.ImageOpacityProperty);
			}
			set
			{
				base.SetValue(MetroFlowItem.ImageOpacityProperty, value);
			}
		}
		public string ItemIndexString
		{
			get
			{
				return (string)base.GetValue(MetroFlowItem.ItemIndexStringProperty);
			}
			private set
			{
				base.SetValue(MetroFlowItem.ItemIndexStringProperty, value);
			}
		}
		public int ItemIndex
		{
			get
			{
				return (int)base.GetValue(MetroFlowItem.ItemIndexProperty);
			}
			set
			{
				base.SetValue(MetroFlowItem.ItemIndexProperty, value);
				this.ItemIndexString = this.ItemIndex.ToString();
			}
		}
		public Visibility ItemIndexVisibility
		{
			get
			{
				return (Visibility)base.GetValue(MetroFlowItem.ItemIndexVisibilityProperty);
			}
			set
			{
				base.SetValue(MetroFlowItem.ItemIndexVisibilityProperty, value);
			}
		}
		public double ItemIndexOpacity
		{
			get
			{
				return (double)base.GetValue(MetroFlowItem.ItemIndexOpacityProperty);
			}
			set
			{
				base.SetValue(MetroFlowItem.ItemIndexOpacityProperty, value);
			}
		}
		public string Title
		{
			get
			{
				return (string)base.GetValue(MetroFlowItem.TitleProperty);
			}
			set
			{
				base.SetValue(MetroFlowItem.TitleProperty, value);
			}
		}
		public Visibility TitleVisibility
		{
			get
			{
				return (Visibility)base.GetValue(MetroFlowItem.TitleVisibilityProperty);
			}
			set
			{
				base.SetValue(MetroFlowItem.TitleVisibilityProperty, value);
			}
		}
		public double TitleOpacity
		{
			get
			{
				return (double)base.GetValue(MetroFlowItem.TitleOpacityProperty);
			}
			set
			{
				base.SetValue(MetroFlowItem.TitleOpacityProperty, value);
			}
		}
		public MetroFlowItem()
		{
			base.set_DefaultStyleKey(typeof(MetroFlowItem));
		}
		private static void smethod_0(DependencyObject dependencyObject_0, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs_0)
		{
			MetroFlowItem metroFlowItem = dependencyObject_0 as MetroFlowItem;
			if (metroFlowItem == null)
			{
				return;
			}
			metroFlowItem.UpdateLayout();
		}
	}
}
